package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.form.VehiClesInfoFrom;
import cn.huiyunche.base.service.model.BStowageModel;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * The interface Fees service.
 */
public interface FeesService {

    /**
     * Query fees map.
     *
     * @param depaCode     始发地编码
     * @param destCode     目的地编码
     * @param distance     运距
     * @param stowageModel 匹配客户订单的配置模型信息
     * @param productId    物流产品id
     * @param startDate    起运时间
     * @param AMorPM       上午或下午（0，1）
     * @param vehicles     车辆信息
     * @param estvalue     the estvalue
     * @param hasInsurance 是否有保险
     * @param isPick       是否提车
     * @param isDeliv      是否送车
     * @param hasInvoice   是否要发票 (是否计算发票税费)
     * @param isSave       是否需要保存费用详情
     * @return the map
     * @Title: queryFees
     * @Description: PC端单笔下单查询费用接口
     * @return: Map<String Object>
     */
    Map<String, Object> queryFees(String depaCode, String destCode, BigDecimal distance, BStowageModel stowageModel, Long productId, Date startDate, Integer AMorPM, List<VehiClesInfoFrom> vehicles, BigDecimal estvalue, Boolean hasInsurance, Boolean isPick, Boolean isDeliv, Boolean hasInvoice, Boolean isSave);

    /**
     * Query intracity fees map.
     * 计算同城配送费用
     *
     * @param areaCode   the area code
     * @param distance   the distance
     * @param vehicleNum the vehicle num
     * @param trailerId  the trailer id
     * @return the map
     */
    Map<String, Object> queryIntracityFees(String areaCode, BigDecimal distance, Integer vehicleNum, Integer trailerId);
}
